;:sys36864
; mps 803 hc mit speeder
; speeder by nh am 5.1.89 um 0
	57 uhr
	*=$8000
	;.opt oo
tmp	=2
return	=$aad7
bs	=$ffd2
setpar	=$ffba
setnam	=$ffbd
gra	=$2000
open	=$ffc0
close	=$ffc3
clrchn	=$ffcc
chkout	=$ffc9
buffer	=$cf00
	jmp hardcopy
me1	brk
use	.word 0
mask	brk
flg	.word 0
xk	.word 0
yk	brk
offx	brk
axk	.word 0
data	brk
anz	brk
modus	brk
xmerk	brk
mulh	.byt 0,1,2,3,5,6,7,8,10,11,12,13,15,16
	.byt 17,18,20,21,22,23,25,26,27,28,30,31
mull	.byt 0,$40,$80,$c0
hardcopy	=*
	jsr outinit
	lda #0
	jsr setnam
	lda #4
	tax
	ldy #0
	jsr setpar
	jsr open
	ldx #4
	jsr chkout
	lda #-1
	sta mask
	lda #7
	sta use
	lda #28
	sta flg
	lda #0
	sta me1
sev1	lda #40
	sta flg+1
	lda #8
	jsr out
	lda #0
	sta xk
	sta xk+1
sev2	lda me1
	sta yk
	lda #0
	sta use+1
sev3	lda xk
	ldx xk+1
	ldy yk
	jsr hposn
	ldy #0
	lda (tmp),y
	ldx use+1
	sta buffer,x
	inc yk
	inx
	stx use+1
	cpx use
	bne sev3
	lda #0
	ldy #7
sev4	ldx use
sev5	asl buffer,x
	rol
	dex
	bpl sev5
	and mask
	ora #$80
	jsr out
	dey
	bpl sev4
	lda xk
	clc
	adc #8
	sta xk
	bcc sev6
	inc xk+1
sev6	dec flg+1
	bne sev2
	lda #13
	jsr out
	lda me1
	clc
	adc #7
	sta me1
	dec flg
	beq sev81
sev8	jmp sev1
sev81	lda #4
	cmp use
	beq sev7
	sta  use
	lda #1
	sta flg
	lda #$f
	sta mask
	bne sev8
sev7	lda #15
	jsr out
	jsr clrchn
	lda #4
	jmp close
hposn	sta axk
	stx axk+1
	tya
	lsr
	lsr
	lsr
	tax
	lda mulh,x
	sta tmp+1
	txa
	and #3
	tax
	lda mull,x
	sta tmp
	tya
	and #7
	clc
	adc tmp
	sta tmp
	lda axk
	and #$f8
	sta offx
	lda #>gra
	ora tmp+1
	sta tmp+1
	clc
	lda tmp
	adc offx
	sta tmp
	lda tmp+1
	adc axk+1
	sta tmp+1
	rts
; druckerspeeder
out	stx xmerk
	ldx modus
	bne ja
	cmp #8
	bne nein
	ldx #0
	stx data
	stx anz
	sta modus
nein	jsr bs
back	ldx xmerk
	rts
ja	cmp #15
	bne weiter
	jsr empty
	lda #0
	sta modus
	lda #15
	bne nein
weiter	tax
	bmi hoch
	pha
	jsr empty
	lda #0
	sta data
	sta anz
	pla
	jmp nein
hoch	cmp data
	bne neu
	inc anz
	bne back
	dec anz
neu	pha
	jsr empty
	pla
	sta data
	lda #1
	sta anz
	bne back
empty	cmp #13
	bne naret
	lda data
	cmp #128
	beq back
naret	ldx anz
	beq back
	cpx #3
	bcs yes
weg	lda data
	jsr bs
	dex
	bne weg
	beq back
yes	lda #26
	jsr bs
	lda anz
	jsr bs
	lda data
	jsr bs
	jmp back
outinit	lda #0
	sta xmerk
	sta modus
	sta data
	sta anz
	rts
